package games.strategy.engine.framework.networkMaintenance; import java.awt.Component; import java.awt.event.ActionEvent; import java.util.Collections; import java.util.List; import javax.swing.AbstractAction; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.JOptionPane; import games.strategy.net.IClientMessenger; import games.strategy.net.INode; public class SetMapClientAction extends AbstractAction { private static final long serialVersionUID = -9156920997678163614L; private final Component m_parent; private final IClientMessenger m_clientMessenger; final List<String> m_availableGames; public SetMapClientAction(final Component parent, final IClientMessenger clientMessenger, final List<String> availableGames) { super("Change Game To"); m_parent = JOptionPane.getFrameForComponent(parent); m_clientMessenger = clientMessenger; m_availableGames = availableGames; Collections.sort(m_availableGames); } @Override public void actionPerformed(final ActionEvent e) { final INode serverNode = m_clientMessenger.getServerNode(); final DefaultComboBoxModel<String> model = new DefaultComboBoxModel<>(); final JComboBox<String> combo = new JComboBox<>(model); model.addElement(""); for (final String game : m_availableGames) { model.addElement(game); } if (serverNode == null || model.getSize() <= 1) { JOptionPane.showMessageDialog(m_parent, "No available games", "No available games", JOptionPane.ERROR_MESSAGE); return; } final int rVal = JOptionPane.showConfirmDialog(m_parent, combo, "Change Game To: ", JOptionPane.OK_CANCEL_OPTION); if (rVal != JOptionPane.OK_OPTION) { return; } final String name = (String) combo.getSelectedItem(); if (name == null || name.length() <= 1) { return; } m_clientMessenger.changeServerGameTo(name); } }